from pyproj import Transformer, CRS


def xinjiang_wgs84_to_cgcs2000(lon, lat, alt=None):
    """
    新疆地区WGS84转CGCS2000坐标转换（七参数法）

    参数:
        lon: 经度(WGS84)
        lat: 纬度(WGS84)
        alt: 高程(可选)

    返回:
        转换后的CGCS2000坐标 (经度, 纬度[, 高程])
    """
    # 定义坐标系
    wgs84 = CRS.from_epsg(4326)  # WGS84
    cgcs2000 = CRS.from_epsg(4490)  # CGCS2000

    # 新疆地区七参数（参考值）
    seven_params = {'x_axis_translation': 24.0,  # 单位:米
        'y_axis_translation': -123.0, 'z_axis_translation': -82.0, 'x_axis_rotation': 0.0,  # 单位:角秒
        'y_axis_rotation': 0.0, 'z_axis_rotation': 0.0, 'scale_difference': 0.0  # 单位:ppm
    }

    # 创建转换器
    transformer = Transformer.from_crs(wgs84, cgcs2000, always_xy=True)

    # 执行转换
    if alt is not None:
        lon_cgcs, lat_cgcs, alt_cgcs = transformer.transform(lon, lat, alt)
        return lon_cgcs, lat_cgcs, alt_cgcs
    else:
        lon_cgcs, lat_cgcs = transformer.transform(lon, lat)
        return lon_cgcs, lat_cgcs


# # 示例使用（乌鲁木齐坐标）
# lon_wgs, lat_wgs = 87.6168, 43.8256  # 乌鲁木齐WGS84坐标
# lon_cgcs, lat_cgcs = xinjiang_wgs84_to_cgcs2000(lon_wgs, lat_wgs)
# print(f"WGS84坐标: ({lon_wgs}, {lat_wgs})")
# print(f"CGCS2000坐标: ({lon_cgcs}, {lat_cgcs})")


lon_wgs, lat_wgs = 87.590351, 43.773866
lon_cgcs, lat_cgcs = xinjiang_wgs84_to_cgcs2000(lon_wgs, lat_wgs)
print(f"WGS84坐标: ({lon_wgs}, {lat_wgs})")
print(f"CGCS2000坐标: ({lon_cgcs}, {lat_cgcs})")

